using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace Ln.Fram.Ddd.Application.Contracts;

public interface ICrudService<TEntityDto, in TKey> : ICrudService<TEntityDto, TKey, PagedAllResultRequestDto>
{
}

public interface
	ICrudService<TEntityDto, in TKey, in TGetListInput> : ICrudService<TEntityDto, TKey, TGetListInput, TEntityDto>
{
}
	
public interface
	ICrudService<TOutputDto, in TKey, in TGetListInput, in TCreateUpdateInput> : ICrudService<TOutputDto, TKey,
	TGetListInput, TCreateUpdateInput, TCreateUpdateInput>
{
}

public interface
	ICrudService<TOutputDto, in TKey, in TGetListInput, in TCreateInput, in TUpdateInput> : ICrudService<TOutputDto,
	TOutputDto, TKey, TGetListInput, TCreateInput, TUpdateInput>
{
}

public interface ICrudService<TGetOutputDto, TGetListOutputDto, in TKey, in TGetListInput, in TCreateInput, in TUpdateInput> :
	IReadService<TGetOutputDto, TGetListOutputDto, TKey, TGetListInput>,
	ICreateUpdateAppService<TGetOutputDto, TKey, TCreateInput, TUpdateInput>,
	IDeleteAppService<TKey>
{
}